var app = getApp()
var times = 1
module.exports = {
    wxGetLocation: wxGetLocation,
    moveAndGetMapCenter: moveAndGetMapCenter,
    getLocationName: getLocationName,
    getMapCenterLocation: getMapCenterLocation,
    isTooClose: isTooClose,
    getMapCenterAddress: getMapCenterAddress
}
//获取用户位置
function wxGetLocation(callback) {
    wx.getLocation({
        type: 'gcj02',//'wgs84',
        success: function (res) {
            callback(res)
        },
        fail: function (res) {
            // console.log('【用户拒绝获取位置】fail:res', res)
            callback(res)
        },
    })
}
//回到用户原点
function moveAndGetMapCenter(mapObj, callback) {
    mapObj.moveToLocation()//回到用户点
    setTimeout(function () {
        // console.log('【第 ' + times + ' 次等到获取地图中心坐标】')
        times++
        getMapCenterLocation(mapObj, callback)
    }, 500);
    // console.log('【回到设备当前位置，开始等待获取】')
}
//获取地图中心坐标(启动小程序时进入一次)
function getMapCenterLocation(mapObj, callback) {
    mapObj.getCenterLocation({//获取地图中心坐标
        success: function (res) {
            // console.log('【启动获取地图中心坐标】res', res,'=app.aData.p==',app.Data.p)
            if (isTooClose(res, app.Data.p)) {
                moveAndGetMapCenter(mapObj, callback)
                //return
            } else {
                callback(res)
            }
        },
        fail: function (res) { console.log('【获取地图中心坐标失败】res', res) },
    })
}
//判断两个位置是否太近,或某个位置异常
function isTooClose(loc1, loc2) {
    // console.log('【测距：1经度，1纬度】', loc1.latitude + '，' + loc1.longitude)
    // console.log('【测距：2经度，2纬度】', loc2.latitude + '，' + loc2.longitude)
    if (x_y_isTooSmall(loc1) || x_y_isTooSmall(loc2)) {
        return true
    }
    var p = {
        latitude: Math.abs(loc1.latitude - loc2.latitude),
        longitude: Math.abs(loc1.longitude - loc2.longitude)
    }
    // console.log('【测距：经差，纬差】', p.latitude + '，' + p.longitude)
    if (x_y_isTooSmall(p)) {
        return true
    } else {
        return false
    }
}
//判经度值，纬度值是否太小于<0.0005
function x_y_isTooSmall(p) {
    if (p.latitude < 0.0005 && p.longitude < 0.0005) {
        return true
    } else {
        return false
    }
}
//获取地图中心坐标及地址(每次点击标记)
function getMapCenterAddress(mapObj, callback) {
    mapObj.getCenterLocation({//获取地图中心坐标
        success: function (res) {
            // console.log('【获取地图中心坐标】res', res)
            callback(res)
        },
        fail: function (res) { console.log('【获取地图中心坐标失败】res', res) },
    })
}
//坐标转中文地址
function getLocationName(loc, callback) {
    //y6KGnZ0tnwKl5uYcGQl7NOAHirGAVr5h    //百度 key
    var QQMap = require('qqmap-wx-jssdk.js')
    var myMap = new QQMap({ key: 'T7ABZ-RU4CP-K67D3-VHM6T-MAYFO-BFBU4' });
    // var myMap = new QQMap({ key: 'A62BZ-7M5CS-OIBOQ-6DCGT-YHMYT-PPF27' });
    myMap.reverseGeocoder({
        location: {
            latitude: loc.latitude,
            longitude: loc.longitude
        },
        success: function (res) {
            console.log(loc.latitude + '，' + loc.longitude + '==' + res.result.address)
            var address = res.result.address
            if (res.result.address_reference) {
                var ref = res.result.address_reference
                if (ref.landmark_l2) {
                    if (ref.landmark_l2.title) {
                        address += ref.landmark_l2.title
                        var add = {
                            address: address,
                            title: ref.landmark_l2.title
                        }
                        callback(add)
                        return
                    }
                }
            }
            callback(address)
        },
        fail: function (res) {
            // console.log('【坐标转中文地址失败:res】', res)
            callback('')
        },
    });
}
